<?php
class EnumTipoPerfil extends Enum_Helper {
	
	const ADMINISTRADOR_FULL = array(1 => "Administrador Full");
	const NORMAL             = array(2 => "Normal");
	const GERENCIAL 		 = array(3 => "Gerencial");
	const ADMINISTRADOR 	 = array(4 => "Administrador");
	
	/**
	 * Método responsável por montar o enum no formato select(html) e validar se pode aparecer o valor Administrador Full
	 * @author Rodrigo Valt <rodrigo@valtsolucoesti.com.br>
	 * @author Valt Soluções em TI
	 * @since 01/08/2015 15:07:50
	 */
	public static function listarEnumSelectTipoPerfil($tipoPerfil){
		if (is_array($tipoPerfil)){
			if (is_numeric($tipoPerfil[0])){
				$tipoPerfil = $tipoPerfil[0];
			}else{
				throw new Exception("Parâmetro Inválido");
			}
		}else{
			if (!is_numeric($tipoPerfil)){
				throw new Exception("Parâmetro Inválido");
			}
		}
	
		$values = array_values(self::getConstants());
	
		$html = "<option></option>";
	
		foreach ($values as $row){
				
			$codigo = null;
			$descricao = null;
				
			foreach ($row as $key => $row2){
				if (is_numeric($key)){
					$codigo = $key;
				}
	
				if (is_string($row2)){
					$descricao = $row2;
				}
	
				break;
			}
				
			if ((int)$codigo === (int)EnumTipoPerfil::getCodigo(EnumTipoPerfil::ADMINISTRADOR_FULL)){
				if ((int)$tipoPerfil === (int)EnumTipoPerfil::getCodigo(EnumTipoPerfil::ADMINISTRADOR_FULL)){
					$html .= '<option value="'.$codigo.'">'.$descricao.'</option>';
				}
			}else{
				$html .= '<option value="'.$codigo.'">'.$descricao.'</option>';
			}
				
		}
	
		return $html;
	}
	
	/**
	 * Método responsável por montar o enum no formato select(html) e retornar selecionado um valor específico
	 * @author Rodrigo Valt <rodrigo@valtsolucoesti.com.br>
	 * @author Valt Soluções em TI
	 * @since 01/08/2015 15:07:50
	 */
	public static function listarEnumSelectSelecionadoTipoPerfil($value, $tipoPerfil){
		if (is_array($value)){
			if (is_numeric($value[0])){
				$value = $value[0];
			}else{
				throw new Exception("Parâmetro Inválido");
			}
		}else{
			if (!is_numeric($value)){
				throw new Exception("Parâmetro Inválido");
			}
		}
		
		if (is_array($tipoPerfil)){
			if (is_numeric($tipoPerfil[0])){
				$tipoPerfil = $tipoPerfil[0];
			}else{
				throw new Exception("Parâmetro Inválido");
			}
		}else{
			if (!is_numeric($tipoPerfil)){
				throw new Exception("Parâmetro Inválido");
			}
		}
	
		$values = array_values(self::getConstants());
	
		$html = "<option></option>";
	
		foreach ($values as $row){
	
			$codigo = null;
			$descricao = null;
	
			foreach ($row as $key => $row2){
				if (is_numeric($key)){
					$codigo = $key;
				}
	
				if (is_string($row2)){
					$descricao = $row2;
				}
	
				break;
			}
			
			if ((int)$codigo === (int)EnumTipoPerfil::getCodigo(EnumTipoPerfil::ADMINISTRADOR_FULL)){
				if ((int)$tipoPerfil === (int)EnumTipoPerfil::getCodigo(EnumTipoPerfil::ADMINISTRADOR_FULL)){
					$selected = (int)$codigo === (int)$value ? 'selected="selected"' : "";
					$html .= '<option '.$selected.' value="'.$codigo.'">'.$descricao.'</option>';
				}
			}else{
				$selected = (int)$codigo === (int)$value ? 'selected="selected"' : "";
				$html .= '<option '.$selected.' value="'.$codigo.'">'.$descricao.'</option>';
			}
		}
		
		return $html;
	}
	
}